在C#中有一些我无法理解的东西.您可以将超出范围int转换为a enum,编译器不会退缩.想象一下enum:
enum Colour
{
Red = 1,
Green = 2,
Blue = 3
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你写:
Colour eco;
eco = (Colour)17;
Run Code Online (Sandbox Code Playgroud)
编译器认为没问题.还有运行时.呃?
为什么C#团队决定实现这一目标?我认为,在这样的场景中,这个决定忽略了使用枚举的重点:
void DoSomethingWithColour(Colour eco)
{
//do something to eco.
}
Run Code Online (Sandbox Code Playgroud)
在像C#这样的强类型语言中,我想假设它eco总是具有合法Colour价值.但这种情况并非如此.程序员可以调用我的方法,其值为17 eco(如前面的代码片段所示),因此我的方法中的代码不能假定它eco具有合法Colour值.我需要明确地测试它并按照我的要求处理特殊值.为什么是这样?
在我的拙见中,如果编译器在将超出范围int转换为a时发出错误(甚至是警告)消息enum,如果int在编译时已知该值,则会更好.如果没有,运行时应该在赋值语句中抛出异常.
你怎么看?这有什么原因吗?
(注意:这是我在很久以前在我的博客上发布的一个问题,但没有得到任何信息回复.)
我有一个UITableView,它被设计为一个分组的tableView.在某些情况下,我需要为标题创建自定义视图,在其他情况下我需要默认视图.
创建自定义标头很容易 - 只需使用委托:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要默认的标题视图,我该从该委托返回什么?
我已经尝试返回nil,这只有在表视图被设置为Plain时才能正常工作.如果表格视图被设置为Grouped,那么当我返回nil时,默认标题会消失.
考虑到我有时需要自定义标题视图,如何获取默认标题?
编辑:
我想我已经找到了问题.在tableView:heightForHeaderInSection中:我执行以下操作:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if ([myArray count] == 0) return 80;
else return [tableView sectionHeaderHeight];
}
Run Code Online (Sandbox Code Playgroud)
似乎[tableView sectionHeaderHeight]为我的标题返回了不正确的高度.它设置为10但应该是30左右.
我正在开发一个我们制作WPF而不是Silverlight的应用程序,因为我们想要一个完整的桌面应用程序,它具有独特的感觉和优势.然而,随着Silverlight 4的发布,我听到有关Silverlight的热议主要是桌面应用程序的首选.
所以; 为什么我应该考虑将我的WPF应用程序移动到Silverlight 4 - 因为我仍然想要一个桌面应用程序?
我正在寻找任何方式在HTML摘要中显示python单元测试的结果.对于Java和Ruby,有类似的工具......还没有找到任何似乎为Python做这个的工具.那里有没有?
JUnit html输出:
替代文字http://www.ibm.com/developerworks/java/library/j-grails03118/UnitTestReport.jpg
Ruby RSpec输出:
alt text http://www.natontesting.com/wp-content/uploads/2009/09/rspec_output.gif
说我有以下jQuery插件:
$.fn.myPlugin = function () {
//plugin code
}
Run Code Online (Sandbox Code Playgroud)
通常,您在一定数量的元素上调用插件,如:
$("body").myPlugin();
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有指定元素的情况下调用我的插件?
我试过这样称呼它:$.myPlugin();但是这不起作用.
有效的是:$().myPlugin();但这是调用它的正确方法吗?
我有一个用于特定情况的自定义异常类。它可以从任何地方抛出,因此 try/catch 并不实用。
throw new CustomException;
Run Code Online (Sandbox Code Playgroud)
我想在 window.onerror 中捕获此错误并将其过滤掉,这在我迄今为止测试过的大多数浏览器中都可以正常工作。
var window_onerror = window.onerror || function() {return false;};
window.onerror = function(message, url, line) {
if (message.match(CustomException.prototype.name)) {
return true;
} else {
return window_onerror(message, url, line);
}
};
Run Code Online (Sandbox Code Playgroud)
但是,在 IE 中 window.onerror 函数接收Exception thrown and not caught而不是我的自定义异常。
我在面试(C#3.0)中被要求提供一个逻辑来从列表中删除项目列表.
我回答了
int[] items={1,2,3,4};
List<int> newList = new List<int>() { 1, 2, 3, 4, 5, 56, 788, 9 };
newList.RemoveAll((int i) => { return items.Contains(i); });
Run Code Online (Sandbox Code Playgroud)
1)面试官回答说,我采用的算法会逐渐花费时间,如果项目增长,并要求我提供更好,更快的算法.什么是有效的算法?
2)如何使用LINQ实现相同的目标?
3)他让我提供一个双向关闭的例子?(一般我知道关闭,什么是双向关闭?,我回答说没有这样的术语存在,但他并不满足).
场景: 用户使用OpenID登录到站点(如StackOverflow).一年后,他们返回网站,但他们的OpenID提供商已经停业,不会让他们登录.
他们如何才能从这种情况中恢复过来?是否有任何支持OpenID的网站已经为此实施了解决方案?
这里有一篇关于依赖党派最佳实践的优秀文章,他们有一个很好的建议,但我仍然在寻找一个这样的例子:
提供丢失标识符功能以切换到新标识符而无需访问旧标识符
提供一种机制来切换帐户以使用新标识符,而无需访问与该帐户关联的旧标识符.这可以采用与传统"忘记密码?"类似的形式.电子邮件验证舞蹈,假设您有用户的电子邮件地址存档.
理由:用户有时会失去使用其标识符的能力,例如当他们的提供商停止向他们提供服务时.此功能允许用户从这种情况中恢复而不会丢失其数据.
我对如何使用发送到用户电子邮件地址的各种令牌完成此操作有一些模糊的想法.但同样,如果其他人已经找到了一个很好的解决方案,我可能还没有想到的细节,那就更好了.
有两个相同对象类型的列表.我想用其中的交织图案加入他们我的项目的第一个列表中被分离Ĵ项目从第二个列表.
在本质上:
第一个清单
{a,b,c,d,e,f,g,h}
第二个清单
{0,1,2,3,4}
其中第一个列表的分组计数为3,第二个列表的分组计数为2.
导致
{a,b,c,0,1,e,f,g,2,3,h,4}
这对Linq有可能吗?
由于我无法控制的原因,我需要连接两个表,我需要空值来匹配.我能想到的最好的选择是吐出一个UUID并将其用作我的比较值,但它看起来很难看
SELECT * FROM T1 JOIN T2 ON nvl(T1.SOMECOL,'f44087d5935dccbda23f71f3e9beb491') =
nvl(T2.SOMECOL,'f44087d5935dccbda23f71f3e9beb491')
Run Code Online (Sandbox Code Playgroud)
我怎么能做得更好?如果重要的话,这在Oracle上,并且上下文是一个应用程序,其中必须将一批用户上载的数据与一批现有数据进行比较,以查看是否有任何行匹配.回想起来,我们应该阻止任一数据集中的任何连接列包含空值,但我们没有,现在我们必须忍受它.
编辑:要清楚,我不仅关注空值.如果列不为null,我希望它们匹配实际值.
c# ×3
javascript ×2
.net ×1
casting ×1
enums ×1
exception ×1
generics ×1
iphone ×1
jquery ×1
linq ×1
login ×1
nose ×1
null ×1
objective-c ×1
openid ×1
oracle ×1
python ×1
silverlight ×1
sql ×1
uitableview ×1
unit-testing ×1
wpf ×1