当我第一次开始使用面向对象的编程语言时,我得到了以下规则:
在类中声明字段时,不要初始化它。在构造函数中这样做。
C#中的一个例子:
public class Test
{
private List<String> l;
public Test()
{
l = new List<String>();
}
}
但最近有人问我为什么要这么做,我想不出原因。我不太熟悉C# (或其他编程语言)的内部工作,因为我认为这可以在所有OO语言中实现。
那为什么要这么做?是保安吗?财产?
在一个非常简单的汇编语言程序中考虑以下两个语句:
DATA1 DB +200
DATA2 DB -130
当我试图汇编它时,汇编程序没有给出2条语句的错误,因为它应该这样做,因为一个字节可以容纳超过-128的十进制。但是为什么汇编程序在没有1条语句的时候没有给出错误呢?毕竟,一个字节最多可以容纳127个正符号整数..取而代之的是,汇编程序将值C8放入该字节。
让我解释一下:
我知道,in Java,您可以这样做:
int myMethod(Burnable obj){
/*do stuff that's only applicable if the argument implements the Burnable
*interface
*/
}
我最喜欢用编程,我也不确定是否也能用编程。
此外,我还想知道其他哪些可以合理地将语言作为主流语言来实现这一点,因为在我看来,这是将模块化构建到代码中的一种方法。
谢谢
我偶然发现了这个答案在codegolf.stackexchange.com中,他们在那里谈论无点编程。下面是一个代码示例。
instead of
foo.Select(x=>int.Parse(x))
you can use
foo.Select(int.Parse)
问题:
Select()如何知道如何将变量传递给int.Parse()?
无点技术是否仅限于Linq/Select,或者其他方法也可以使用它?
如何将其实现到我自己的C#函数中?会喜欢一些例子的。
我想知道为什么这会抛出异常(在执行时):
IAgentIndicator iai = (IAgentIndicator)Activator.CreateInstance(agentIndicatorType);
当我有一个带有默认参数的构造函数时(但是当我不创建构造函数时,public foo():
public class foo : IAgentIndicator
{
public foo(int a = 0, int b = 0)
{
}
}
不是编译时生成的无参数构造函数吗?
我正在学习java编程。所以有时候我看到的代码看起来像这样:
Shape ball= new Shape();.// takes no parameter
Shape ball= new Shape(1,2); //takes parameter
我的问题是,当一个对象有多个带不同参数的构造函数时,你怎么知道要使用哪个构造函数呢?