我有以下代码
class TopClass
{
public string ClsProp1 { get; set; }
public string ClsProp2 { get; set; }
public SubClass ClsProp3 { get; set; }
}
class SubClass
{
public string SCProp1 { get; set; }
public string SCProp2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
Test.TopClass TCN = new Test.TopClass();
TCN.ClsProp1 = "TCProp1--string value";
TCN.ClsProp2 = "TCProp2--string value";
TCN.ClsProp3.SCProp1 = "SCProp1--string value";
TCN.ClsProp3.SCProp2 = "SCProp2--string value";
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何实例化TCN.ClsProp3.ScProp1和TCN.ClsProp3.ScProp2值.我不断收到"Test.exe中发生类型'System.NullReferenceException'的未处理异常附加信息:对象引用未设置为对象的实例." 错误信息.原谅我的无知,我真的想从零开始学习OOP.
提前致谢
我有以下代码使用Text::CSV
:
#!/usr/bin/perl
package main;
use strict;
use warnings;
use Text::CSV;
my $csv = Text::CSV -> new ({ binary => 0, eol => $/ });
open my $io, "<", $file or die "$file: $!";
while (my $row = $csv -> getline ($io))
{
my @fields = @$row;
while(my $field = <@fields>)
{
print $field."\n";
}
}
Run Code Online (Sandbox Code Playgroud)
(改编自Text::CSV
文件)
当我@fields
在为其分配值后尝试遍历我的数组时@$row
,它会分解空格上的值.例如
"FOO","BAR","IM FOO BAR'D"
Run Code Online (Sandbox Code Playgroud)
出来了
FOO
BAR
IM
FOO
BAR'D
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
我有这个示例代码.我想要做的是使"Nums"值只能使用"AddNum"方法写入.
namespace ConsoleApplication1
{
public class Person
{
string myName = "N/A";
int myAge = 0;
List<int> _nums = new List<int>();
public List<int> Nums
{
get
{
return _nums;
}
}
public void AddNum(int NumToAdd)
{
_nums.Add(NumToAdd);
}
public string Name { get; set; }
public int Age { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,我已经尝试了一些关于AsReadOnly()和readonly关键字的东西,但我似乎无法让它做我想做的事情.
以下是我必须访问该属性的代码示例.
Person p1 = new Person();
p1.Nums.Add(25); //access 1
p1.AddNum(37); //access 2
Console.WriteLine("press any key");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
我真的希望"访问1"失败,"访问2"是唯一可以设置值的方式.在此先感谢您的帮助.