И Майкрософт будет обязан конфисковать средства ООО «Microsoft Рус», если ООО «Microsoft Рус» будет работать в Крыму.
Sec. 2. (a) All property and interests in property that are in the United States, that hereafter come within the United States, or that are or hereafter come within the possession or control of any United States person (including any foreign branch) of the following persons are blocked and may not be transferred, paid, exported, withdrawn, or otherwise dealt in: any person determined by the Secretary of the Treasury, in consultation with the Secretary of State:
(i) to operate in the Crimea region of Ukraine;
Of course, the question is, why didn’t the C# compiler simply emit the call instruction instead? The answer is because the C# team decided that the JIT compiler should generate code to verify that the object being used to make the call is not null. This means that calls to nonvirtual instance methods are a little slower than they could be. It also means that the following C# code will cause a NullReferenceException to be thrown. In some other programming languages, the intention of the following code would run just fine.
using System;
public sealed class Program {
public Int32 GetFive() { return 5; }
public static void Main()
{
Program p = null;
Int32 x = p.GetFive(); // In C#, NullReferenceException is thrown
}
}
Theoretically, the preceding code is fine. Sure, the variable p is null, but when calling a nonvirtual method (GetFive), the CLR needs to know just the data type of p, which is Program. If GetFive did get called, the value of the this argument would be null. Because the argument is not used inside the GetFive method, no NullReferenceException would be thrown. However, because the C# compiler emits a callvirt instruction instead of a call instruction, the preceding code will end up throwing the NullReferenceException.
IMPORTANT
If you define a method as nonvirtual, you should never change the method to virtual in the future. The reason is because some compilers will call the nonvirtual method by using the call instruction instead of the callvirt instruction. If the method changes from nonvirtual to virtual and the referencing code is not recompiled, the virtual method will be called nonvirtually, causing the application to produce unpredictable behavior. If the referencing code is written in C#, this is not a problem, because C# calls all instance methods by using callvirt. But this could be a problem if the referencing code was written using a different programming language.
Richter, Jeffrey (2012-11-15). CLR via C# (4th Edition) (Developer Reference)
То есть, вы хотите сказать, что это отключение не задело, скажем, Израиль, или что израильтяне этого не заметили, или что жалобы в интернетах по поводу глючащего GPS моментально цензурировались американскими соцсетями и поэтому их теперь Zigmar найти не может?
По поводу №2:
Разбирался когда-то с одним багом, всё выглядело так, как будто если удалить файл и сразу же снова его создать, то дата создания не меняется. Глубже не копал, правда, и так и не узнал, из-за чего именно такие чудеса происходят.
Не то, что бы это к теме относится, но всё-таки news.bbc.co.uk/2/hi/8057762.stm
I was one of the foreign journalists who witnessed the events that night.
We got the story generally right, but on one detail I and others conveyed the wrong impression. There was no massacre on Tiananmen Square.
www.treasury.gov/resource-center/sanctions/Programs/Documents/ukraine_eo4.pdf
Разделы 2.a.i и 8.a.
Theoretically, the preceding code is fine. Sure, the variable p is null, but when calling a nonvirtual method (GetFive), the CLR needs to know just the data type of p, which is Program. If GetFive did get called, the value of the this argument would be null. Because the argument is not used inside the GetFive method, no NullReferenceException would be thrown. However, because the C# compiler emits a callvirt instruction instead of a call instruction, the preceding code will end up throwing the NullReferenceException.
IMPORTANT
If you define a method as nonvirtual, you should never change the method to virtual in the future. The reason is because some compilers will call the nonvirtual method by using the call instruction instead of the callvirt instruction. If the method changes from nonvirtual to virtual and the referencing code is not recompiled, the virtual method will be called nonvirtually, causing the application to produce unpredictable behavior. If the referencing code is written in C#, this is not a problem, because C# calls all instance methods by using callvirt. But this could be a problem if the referencing code was written using a different programming language.
Richter, Jeffrey (2012-11-15). CLR via C# (4th Edition) (Developer Reference)
www.youtube.com/watch?v=Wp_K8prLfso
Разбирался когда-то с одним багом, всё выглядело так, как будто если удалить файл и сразу же снова его создать, то дата создания не меняется. Глубже не копал, правда, и так и не узнал, из-за чего именно такие чудеса происходят.
news.bbc.co.uk/2/hi/8057762.stm
I was one of the foreign journalists who witnessed the events that night.
We got the story generally right, but on one detail I and others conveyed the wrong impression. There was no massacre on Tiananmen Square.
see.stanford.edu/see/courses.aspx