C# C语言中的引用和对象#

C# C语言中的引用和对象#,c#,class,instance,C#,Class,Instance,我目前正在为学校写作业。我不知道该如何评论我的应用程序的不同部分 我需要读取文件,因此我使用StreamReader类 当我写这个的时候 StreamReader reader; StreamReader reader; 我很难定义我刚才做了什么。罗布·迈尔斯(Rob Miles)的《C#Yellow Book》定义了这个非常相似的代码 Account RobsAccount; Account RobsAccount; 当程序遵守该行时,实际得到的是一个引用的创建 叫罗布萨克伯爵 他用

我目前正在为学校写作业。我不知道该如何评论我的应用程序的不同部分

我需要读取文件,因此我使用StreamReader类

当我写这个的时候

StreamReader reader;
StreamReader reader; 
我很难定义我刚才做了什么。罗布·迈尔斯(Rob Miles)的《C#Yellow Book》定义了这个非常相似的代码

Account RobsAccount;
Account RobsAccount;
当程序遵守该行时,实际得到的是一个引用的创建 叫罗布萨克伯爵

他用一个类似于行李标签的比喻来说明这一点

你可以把它们想象成有点像行李标签,因为它们可以系在行李上 有绳子的东西。如果你有标签,你可以跟着绳子到 它所绑定的对象

当Rob Miles稍后写这篇文章时

RobsAccount = new Account();
RobsAccount = new Account(); 
他把它描述为

(…)创建类的实例,然后连接标记 去吧

与我的情况类似,我只是写

reader = new StreamReader(file, Encoding.Default);
在读了几本关于C#的书之后,我仍然不能自信地评论所谓的什么。他们似乎使用不同的名字和不同的类比

所以我的问题是:

对此有什么合适的评论

StreamReader reader;
reader = new StreamReader(file, Encoding.Default);
StreamReader reader; 
reader = new StreamReader(file, Encoding.Default);
对此有什么合适的评论

StreamReader reader;
reader = new StreamReader(file, Encoding.Default);
StreamReader reader; 
reader = new StreamReader(file, Encoding.Default);
我的编程老师说当你写作的时候

StreamReader reader;
您正在创建一个名为reader的StreamReader类型的变量。此变量实际上是指向通过写入创建的对象的指针(因此称为引用)

new StreamReader(file, Encoding.Default);
这是正确的描述方式吗

StreamReader reader;
这是变量声明

reader = new StreamReader(file, Encoding.Default);

在这里,您将使用StreamReader类的对象实例化变量“reader”。

如果您谈论的是内部文档,那么在声明变量时,您应该对变量的功能进行注释(为什么要这样做)。 以下是有关文档的一些快速提示的链接:

如果你的任务是描述幕后发生的事情(即“玩电脑”),那么

这是一份声明。这意味着Java已将该名称保留为引用,并且它知道该引用将指向内存中具有表示该类型(“类”)的数据的位置

当你这样做的时候

new StreamReader(file, Encoding.Default);

实际上,您正在修改引用点指向的容器的内容。“new”关键字告诉Java您想要获得一些内存,而NewReader()函数调用会在JVM(虚拟机)维护名称/引用->容器/数据关系时修改该内存。

在C#中声明变量和实例化变量是有区别的。当你写这行的时候

StreamReader reader;
您正在创建对名为reader的空StreamReader对象的引用。如果在实例化它之前尝试使用它,将得到一个空对象引用。当您发表评论时,您可以声明您已经声明了一个对象引用

当你写下下面这行的时候

reader = new StreamReader(file, Encoding.Default);
您正在实例化
读取器
对象。也就是说,您正在为先前创建的对象引用提供一个值。当您在这一行进行注释时,可以说您已经实例化了对象。在此之后,如果尝试引用此对象,则不应收到NullReference异常

当我写这个的时候

StreamReader reader;
StreamReader reader; 
我很难定义我刚才做了什么。C# Rob Miles的黄皮书定义了这个非常相似的代码

Account RobsAccount;
Account RobsAccount;
  • 唯一相似的是,在这两种情况下,都声明了一个变量
  • 忘了这个类比吧,虽然它是正确的,但它似乎比它做任何好事都更让你困惑,如果你喜欢做什么,爱好等等,我可以为你量身定做一个,这样你就可以与它联系起来
当Rob Miles稍后写这篇文章时

RobsAccount = new Account();
RobsAccount = new Account(); 
他将其描述为(…)创建类的实例,然后将我们的标记连接到它

让我们来分析一下

// The code below is instantiating a new object.
// new Account();

// The code below is declaring a variable, at the moment it is null
// This is because it isn't referencing any objects that we've created.
Account RobsAccount;

// The `=` character is an assignment operator, and we'll need it to 
// assign objects that we create to variables.
// The code below will assign an object of type Account, to the variable
// RobsAccount which has a type of Account.
RobsAccount = new Account();

// Now the `RobsAccount` variable is pointing to the object
// that we just instantiated
继续你的最后一个问题

对此有什么合适的评论

StreamReader reader;
reader = new StreamReader(file, Encoding.Default);
StreamReader reader; 
reader = new StreamReader(file, Encoding.Default);
对此有什么合适的评论

StreamReader reader;
reader = new StreamReader(file, Encoding.Default);
StreamReader reader; 
reader = new StreamReader(file, Encoding.Default);

关键词:

  • 类型:每个变量或常量都有一个
    类型
    ,它可能是
    字符串
    整数
    布尔值
    流读取器
    ,或者使用
    结构
    定义的类型,任何计算为值的表达式都有一个
    类型
  • 类:引用类型
    引用对象。想象一下你的类寄存器,它会引用你,有很多寄存器,但它们都引用你作为一个人
  • 结构:引用值的
    值类型
    。如果您的类寄存器要按值引用您的名称,并且您要更改名称,则寄存器仍将引用旧值
  • 实例化:创建类的实例
  • 对象:是实例化类的结果
  • 变量:是
    类型
    的一个实例,如果变量是
    值类型
    ,那么它将始终由一个值组成,如果变量是
    引用类型
    ,那么它也可能为空,因为
    引用类型
    可能根本没有引用任何内容,但是,值类型将始终具有默认值。。。(不要被
    int?
    欺骗它是一种值类型!它只是翻译成
    Nullable
    ,但
    Nullable
    类型实际上是一种
    struct

这是一个非常宽泛的问题。真正的答案是,这是一行自我注释的代码,你不需要注释。但我认为你的学校不会喜欢这个答案。它不宽泛,可能与主题无关。Op可能会尝试在其他StackSite上提问。第一句话是声明。你正在声明一个变量(或者Rob Miles称之为引用)类型为
StreamReader
。第二条语句是Instantiation和assignment;您正在创建一个新的StreamReader并将其分配给
reader
变量。您的teac