我有以下公共财产,暴露了Arraylist
:
public ArrayList SpillageRiskDescriptions
{
get
{
return _SpillageRiskDescriptions;
}
set
{
_SpillageRiskDescriptions = value;
}
}
Run Code Online (Sandbox Code Playgroud)
在其他地方,我正在打电话
SpillageRiskDescriptions.Add("VENTILATE AREA");
SpillageRiskDescriptions.Add("DO NOT ALLOW SPILLAGE TO ENTER MAINS");
Run Code Online (Sandbox Code Playgroud)
这些似乎是向私有ArrayList添加元素_SpillageRiskDescriptions
(通过属性),而我希望这会导致问题.因此,我认为属性返回对原始变量的引用而不是按值传递它是否正确?这是因为ArrayList
是参考类型吗?int
(例如?)会发生同样的情况吗?
我是否正确地认为任何不从System.ValueType继承的对象因此必须是引用类型?
我一直无法找到任何确凿的文档来备份这个概念.
我有一个LINQ语句,它将多个列的值相加,每个列都以'HH'开头,尽管还有其他列可用:
//TODO Clean up this mess
var query1 = (from e in Data
where e.SD == date
select e).Select(x => x.HH01 + x.HH16 + x.HH17 + x.HH18 + x.HH19 + x.HH20 + x.HH21 + x.HH22 + x.HH23 +
x.HH24 + x.HH25 + x.HH26 + x.HH27 + x.HH28 + x.HH29 + x.HH30 + x.HH31 + x.HH32 +
x.HH33 + x.HH34 + x.HH35 + x.HH36 + x.HH37 + x.HH38 + x.HH39 + x.HH40 + x.HH41 +
x.HH42 + x.HH43 + x.HH44 +x.HH45 …
Run Code Online (Sandbox Code Playgroud) 使用Javascript:
var validate(s) = s.match ^( 100(?:\.0{1,2})? | 0*?\.\d{1,2} | \d{1,2}(?:\.\d {1,2})? )% $ != null;
var str = value.match(/\/\/%//g);
if(converted==NaN){
alert('Input was not a number');
}
else if(converted != null) {
var fracToDecimal = eval (value);
alert(fracToDecimal);
}
else if(converted = str) {
var percToDecimal = value/100;
alert(percToDecimal);
} }
Run Code Online (Sandbox Code Playgroud) 我正在关注ASP.NET MVC教程,并且已经在VB.NET中启动了,我在转换以下剃刀代码时遇到了问题:
我有
<ul>
@For Each g As MvcApplication1.Genre In Model
<li> @g.Name </li>
Next
</ul>
Run Code Online (Sandbox Code Playgroud)
但得到
属性Sepcifier不是一个完整的陈述
在两个<li>
标签上.我知道我需要使用行继续但无法弄清楚在哪里.如果你能指出问题,我会很高兴.
我有以下单元测试:
string MtrlCode = "0";
Assessment target = new Assessment(MtrlCode);
List<string> EdgeCaseSymbolCodes = new List<string>(); //More than 3
EdgeCaseSymbolCodes.Add("FLA");
EdgeCaseSymbolCodes.Add("HAR");
EdgeCaseSymbolCodes.Add("COR");
EdgeCaseSymbolCodes.Add("ENVON");
EdgeCaseSymbolCodes.Add("ENVR");
EdgeCaseSymbolCodes.Add("EXP");
target.HazardSymbols = EdgeCaseSymbolCodes;
List<string> EdgeCaseSymbolCodesExpected = new List<string>(); //Should be 3
EdgeCaseSymbolCodesExpected.Add("FLA");
EdgeCaseSymbolCodesExpected.Add("HAR");
EdgeCaseSymbolCodesExpected.Add("COR");
System.Windows.Forms.MessageBox.Show(EdgeCaseSymbolCodesExpected[0] + EdgeCaseSymbolCodesExpected[1] + EdgeCaseSymbolCodesExpected[2] + " = \n" + target.HazardSymbols[0] + target.HazardSymbols[1] + target.HazardSymbols[2]);
Assert.AreEqual<List<string>>(EdgeCaseSymbolCodesExpected, target.HazardSymbols, "COSHH_2008.Custom_Classes.Assessment.setHazardSymbols Edge Case did not return the expected value.");
Run Code Online (Sandbox Code Playgroud)
这是测试边缘情况(List<string>
具有超过3个元素的时间),所需输出是仅返回前3个.
目前测试失败了,我不得不求助于使用它MessageBox
来查看测试内部(由于断点没有被击中!).
从我可以看到的元素是相同的,但我意识到List<string>
对象可能有其他不同,但我不能看到这一点,因为断点从未被击中.
我在Visual Studio 2005中找不到模块窗口.
你接下来的步骤是什么?
众所周知,字符串是隐式实例化的,这意味着我们不必使用new
它来获取对象的对象的引用.
因此,我一直认为框架正在处理这个问题,因此如果我这样做,我会得到相同的IL:
String first = new String(new char[] {'a'});
string second = "a";
Run Code Online (Sandbox Code Playgroud)
然而,似乎第一行是使用newobj instance void [mscorlib]System.String::.ctor(char[])
和第二行完成的ldstr "a"
.
那么为了获得一个字符串引用,ldstr
内部调用newobj
,我在哪里可以看到规范/细节来支持它?
我正在测试在构造函数中调用虚拟成员的效果,并发现在调用该成员时,生成的异常被包装在一个TargetInvocationException
.
根据文档,这是:
由反射调用的方法抛出的异常
但是我没有意识到通过反射的任何调用.那么这是否意味着虚拟成员总是通过反射来调用?如果没有,为什么在这种情况下呢?
代码:
class ClassA
{
public ClassA()
{
SplitTheWords();
}
public virtual void SplitTheWords()
{
//I've been overidden
}
}
class ClassB : ClassA
{
private readonly String _output;
public ClassB()
{
_output = "Constructor has occured";
}
public override void SplitTheWords()
{
String[] something = _output.Split(new[]{' '}); //TargetInvocationException!
}
}
Run Code Online (Sandbox Code Playgroud) 我有许多嵌套的复杂对象,我尝试使用以下代码将它们与流畅断言进行比较:
\nrestResponse.Should().BeEquivalentTo(mappedSoapResponse, options =>\n {\n options.AllowingInfiniteRecursion();\n options.IgnoringCyclicReferences();\n return options;\n });\n
Run Code Online (Sandbox Code Playgroud)\n尽管如此,尽管特别启用了无限递归,但我仍然遇到“达到最大递归深度\xe2\x80\xa6”的问题。
\nc# ×8
.net ×6
asp.net ×3
vb.net ×3
asp.net-mvc ×1
cil ×1
debugging ×1
exception ×1
fluent ×1
il ×1
javascript ×1
jit ×1
linq ×1
properties ×1
razor ×1
unit-testing ×1
value-type ×1
virtual ×1