快速提问:您何时决定使用属性(在C#中)以及何时决定使用方法?
我们正在忙着进行这场辩论,并且发现了一些我们应该使用财产或方法存在争议的领域.一个例子是:
public void SetLabel(string text)
{
Label.Text = text;
}
Run Code Online (Sandbox Code Playgroud)
在该示例中,Label是ASPX页面上的控件.是否有一个原则可以控制决策(在这种情况下)是否将其作为方法或财产.
我会接受最全面和最全面的答案,但这也触及了我给出的例子.
如果我用关键字参数定义一个类方法,那么:
class foo(object):
def foodo(thing=None, thong='not underwear'):
print thing if thing else "nothing"
print 'a thong is',thong
Run Code Online (Sandbox Code Playgroud)
调用该方法会生成一个TypeError:
myfoo = foo()
myfoo.foodo(thing="something")
...
TypeError: foodo() got multiple values for keyword argument 'thing'
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
我一直在玩静态方法的修饰符,并遇到了一个奇怪的行为.
我们知道,静态方法不能被覆盖,因为它们与类而不是实例相关联.
所以,如果我有下面的代码片段,它编译得很好
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在A类中将final修饰符包含到静态方法中,则编译失败 ,B中的ts()不能覆盖A中的ts(); 重写方法是静态最终的.
当静态方法根本无法被覆盖时,为什么会发生这种情况?
我对C#中的单元测试相当新,并且学习使用Moq.以下是我要测试的课程.
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的TestClass:
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Expected invocation on the mock at least once, but was never performed …Run Code Online (Sandbox Code Playgroud) 我有一个带有两个值的枚举类,我想创建一个接收值并返回另一个值的方法.我还想保持类型安全(这就是我使用枚举类而不是枚举的原因).
http://www.cplusplus.com/doc/tutorial/other_data_types/没有提及方法的任何内容但是,我的印象是任何类型的类都可以有方法.
我在这里看过很多帖子说不要使用$_REQUEST变量.我通常不这样做,但有时它很方便.它出什么问题了?
我使用一个AsyncTask加载操作,我实现为内部类.
在onPreExecute()我显示一个加载对话框,然后我再次隐藏onPostExecute().但对于我提前知道的一些加载操作,它们会很快完成,因此我不想显示加载对话框.
我想通过一个布尔参数来表明这个,我可以传递给它,onPreExecute()但显然由于某种原因onPreExecute()不采取任何参数.
显而易见的解决方法可能是在我的AsyncTask或外部类中创建一个成员字段,我必须在每次加载操作之前设置它,但这似乎不是很优雅.有一个更好的方法吗?
假设我这样做很方便:
foo.GetColumnValues(dm.mainColumn, int)
foo.GetColumnValues(dm.mainColumn, string)
Run Code Online (Sandbox Code Playgroud)
其中GetColumns方法将根据传递的类型调用其他方法.
是的,我可以做一个布尔标志或类似的东西,我只是想知道是否有办法可能通过这个,然后问:
typeof(arg [1])或类似的......
我也可以覆盖方法,使用泛型等 - 我知道有不同的方法来做到这一点,我只是好奇,如果这是可能的.
在执行重构时,我最终创建了一个类似下面示例的方法.为简单起见,数据类型已更改.
我之前有一个这样的赋值语句:
MyObject myVar = new MyObject();
Run Code Online (Sandbox Code Playgroud)
它是偶然重构的:
private static new MyObject CreateSomething()
{
return new MyObject{"Something New"};
}
Run Code Online (Sandbox Code Playgroud)
这是我的剪切/粘贴错误的结果,但new关键字in private static new有效并编译.
问题:new关键字在方法签名中表示什么?我假设它是在C#3.0中引入的东西?
这有override什么不同?
我有一个嵌套字典.是否只有一种方法可以安全地获得价值?
try:
example_dict['key1']['key2']
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
或者python有一个像get()嵌套字典的方法?
methods ×10
c# ×4
parameters ×2
python ×2
android ×1
c++ ×1
class ×1
dictionary ×1
enums ×1
except ×1
final ×1
form-submit ×1
java ×1
keyword ×1
moq ×1
php ×1
properties ×1
python-2.7 ×1
static ×1
testing ×1
types ×1