我仍然怀疑object.它是任何类的任何类的主要基类.但它是引用类型还是值类型.或者喜欢这些行为中的哪一个呢?我需要澄清一下.我很难理解这一点.
object obj1 = "OldString";
object obj2 = obj1;
obj1 = "NewString";
MessageBox.Show(obj1 + " " + obj2);
//Output is "NewString OldString"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它就像一个值类型.如果object是引用类型,那么为什么obj2值仍然是"OldString"
class SampleClass
{
public string Text { get; set; }
}
SampleClass Sample1 = new SampleClass();
Sample1.Text="OldText";
object refer1 = Sample1;
object refer2 = refer1;
Sample1.Text = "NewText";
MessageBox.Show((refer1 as SampleClass).Text + (refer2 as SampleClass).Text);
//OutPut is "NewText NewText"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它就像引用类型
我们可以推断出它object的类型就是你所包含的内容.它既可以是引用类型,也可以是值类型.这是关于你在里面装的东西.我对吗?
我有一个简单的问题.如果我们将一些null变量转换为一个类型.我希望编译器抛出一些异常,但事实并非如此.我真的想知道原因.我的意思是
string sample1 = null as string;
string sample2 = (string)null;
object t1 = null;
TestClass t2 = (TestClass)t1;
Run Code Online (Sandbox Code Playgroud)
可能在第一个,因为操作员处理异常处理.但其他样本必须抛出异常.编译器如何处理这些情况,可能因为变量为null,它不执行强制转换操作?因为如果它真的抛出空指针它必定是一个错误.
如果此关键字引用类的当前实例作为程序类中的实例(Application.Run(new Form1()))
我们可以使用此关键字来访问它的属性
this .Text = "debuggging";
this .Opacity = 54;
this .ShowIcon = true;
this .Size = new Size(100, 100);
Run Code Online (Sandbox Code Playgroud)
为什么不能用Form1.ActiveForm达到它.*(所有房产)
只是出于好奇,但为什么
当像这样编码
Form1.ActiveForm.Text = "debugla";
Form1.ActiveForm.Opacity = 54;
Form1.ActiveForm.ShowIcon = true;
Form1.ActiveForm.Size = new Size(100, 100);
Run Code Online (Sandbox Code Playgroud)
和activeform必须为我们带来当前使用的活动表单
抛出null引用异常为什么?