我刚刚看到一个关于try-catch的问题,人们(包括Jon Skeet)说空的拦截块是一个非常糟糕的主意?为什么这个?没有空的捕获不是错误的设计决定的情况吗?
我的意思是,例如,有时你想从某个地方(网络服务,数据库)获得一些额外的信息,你真的不在乎你是否会收到这些信息.所以你试图得到它,如果有什么事情发生,那没关系,我只会添加一个"catch(Exception ignored){}",这就是全部
我有一个枚举,看起来像
public enum Animal {
ELEPHANT,
GIRAFFE,
TURTLE,
SNAKE,
FROG
}
Run Code Online (Sandbox Code Playgroud)
我想做点什么
Animal frog = Animal.FROG;
Animal snake = Animal.SNAKE;
boolean isFrogAmphibian = frog.isAmphibian(); //true
boolean isSnakeAmphibian = snake.isAmphibian(); //false
boolean isFrogReptile = frog.isReptile(); //false
boolean isSnakeReptile = snake.isReptile(); //true
boolean isFrogMammal = frog.isMammal(); //false
boolean isSnakeMammal = snake.isMammal(); //false
Run Code Online (Sandbox Code Playgroud)
我简化了教学目的的例子,但这对我的真实例子非常有用.我可以用Java做吗?
任何人都可以给我一个网站的引用,其中包含主要Java数据结构的摘要,以及它们各自的复杂性(对于某些给定的操作,如添加,查找,删除),例如Hashtables是O(1)用于查找,而LinkedLists在...上).像内存使用这样的一些细节也会很好.
这对于在算法的数据结构中进行思考非常有用.
使用linq将空值传递给ExecuteCommand()方法时遇到问题.我的代码类似于下面的代码:
public void InsertCostumer(string name, int age, string address)
{
List<object> myList = new List<object>();
myList.Add(name);
myList.Add(age);
myList.Add(address);
StringBuilder queryInsert = new StringBuilder();
queryInsert.Append("insert into Customers(name, address) values ({0}, {1}, {2})");
this.myDataContext.ExecuteCommand(queryInsert.ToString(), myList.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
但是,当参数为null(例如地址)时,我收到以下错误:"查询参数不能是'System.Object'类型."
如果没有参数为null,则不会发生错误.我知道我的例子中的设计有点差,我只是创建了一个简化的例子来关注问题.有什么建议?
我正在尝试测试我使用模拟制作的一些类,但我已经看到c#中的所有免费模拟框架都无法模拟非虚方法(如果它不在接口中).
但是,有可以做到这一点的TypeMock,所以它是可能的.任何人都可以展示如何做到这一点?如果我能完成这项任务,我甚至可能会尝试为开源框架做出贡献.
提前致谢
我是一名java程序员,但现在进入"python领域"的一些东西,Python更好用.我非常确定我的代码的很大一部分对于Python程序员来说看起来很奇怪(例如,在每个if上都使用括号).
我知道每种语言都有自己的惯例和一套"习惯".因此,从可读性的角度来看,什么是Java中"走的路"的约定和实践,但实际上并不是"pythonic方式"?
我在C#中有一个包含字典的类,我想创建它并确保在该字典中添加,编辑或删除任何内容,只要包含它的类存在即可.
readonly并没有真正的帮助,一旦我测试并看到我可以添加项目.例如,我创建了一个例子:
public class DictContainer
{
private readonly Dictionary<int, int> myDictionary;
public DictContainer()
{
myDictionary = GetDictionary();
}
private Dictionary<int, int> GetDictionary()
{
Dictionary<int, int> myDictionary = new Dictionary<int, int>();
myDictionary.Add(1, 2);
myDictionary.Add(2, 4);
myDictionary.Add(3, 6);
return myDictionary;
}
public void Add(int key, int value)
{
myDictionary.Add(key, value);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望Add方法不起作用.如果可能的话,我希望它甚至不能编译.有什么建议?
实际上,我很担心代码会让很多人改变.因此,即使我隐藏了Add方法,某人也可能"无辜地"创建一个添加密钥或删除另一个密钥的方法.我希望人们看起来并知道他们不应该以任何方式改变字典.就像我有一个const变量一样.
几分钟前我看到了这个问题,并决定查看java String类来检查+运算符是否有一些重载.
我找不到任何东西,但我知道我能做到这一点
String ab = "ab";
String cd = "cd";
String both = ab + cd; //both = "abcd"
Run Code Online (Sandbox Code Playgroud)
实施的地方在哪里?
我想知道我是否可以通过指示一个变量是静态类变量来使我的代码更清晰.如果它不是静态的,我可以使用this.variableName,每个人都会看着它并立即知道.
我知道我可以采用像s_variableName这样的命名约定,但这对我来说似乎有些奇怪,并增加了代码的学习曲线.
静态变量是否有"this"的等价物?
c# ×5
java ×4
.net ×2
conventions ×1
dictionary ×1
enums ×1
function ×1
immutability ×1
linq-to-sql ×1
mocking ×1
null ×1
python ×1
readability ×1
readonly ×1
static ×1
string ×1
summary ×1
testing ×1
this ×1
try-catch ×1
typemock ×1
winforms ×1
wizard ×1