小编Ufu*_*MEN的帖子

对象是引用类型还是值类型?

我仍然怀疑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的类型就是你所包含的内容.它既可以是引用类型,也可以是值类型.这是关于你在里面装的东西.我对吗?

c# oop object value-type reference-type

20
推荐指数
3
解决办法
1万
查看次数

将null值转换为类型

我有一个简单的问题.如果我们将一些null变量转换为一个类型.我希望编译器抛出一些异常,但事实并非如此.我真的想知道原因.我的意思是

string sample1 = null as string;
string sample2 = (string)null;


object t1 = null;
TestClass t2 = (TestClass)t1; 
Run Code Online (Sandbox Code Playgroud)

可能在第一个,因为操作员处理异常处理.但其他样本必须抛出异常.编译器如何处理这些情况,可能因为变量为null,它不执行强制转换操作?因为如果它真的抛出空指针它必定是一个错误.

c# null casting compiler-errors nullreferenceexception

16
推荐指数
1
解决办法
1万
查看次数

为什么"this"有效,但"Form.Activeform"会抛出NullRefernceException?

如果此关键字引用类的当前实例作为程序类中的实例(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引用异常为什么?

c#

0
推荐指数
2
解决办法
6090
查看次数