Java要求如果在构造函数中调用this()或super(),它必须是第一个语句.为什么?
例如:
public class MyClass {
public MyClass(int x) {}
}
public class MySubClass extends MyClass {
public MySubClass(int a, int b) {
int c = a + b;
super(c); // COMPILE ERROR
}
}
Run Code Online (Sandbox Code Playgroud)
Sun编译器说"调用super必须是构造函数中的第一个语句".Eclipse编译器说"构造函数调用必须是构造函数中的第一个语句".
但是,您可以通过重新安排代码来解决这个问题:
public class MySubClass extends MyClass {
public MySubClass(int a, int b) {
super(a + b); // OK
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个例子:
public class MyClass {
public MyClass(List list) {}
}
public class MySubClassA extends MyClass {
public MySubClassA(Object item) {
// Create a list …Run Code Online (Sandbox Code Playgroud) C#4.0是否允许可选out或ref参数?
如何捕获ASP.NET Web Api中发生的所有未处理的异常,以便我可以记录它们?
到目前为止,我尝试过:
ExceptionHandlingAttributeApplication_Error方法Global.asax.csAppDomain.CurrentDomain.UnhandledExceptionTaskScheduler.UnobservedTaskException在ExceptionHandlingAttribute成功处理时引发的控制器操作方法和操作筛选范围内,但其他异常没有被处理,例如例外:
IQueryableaction方法返回的异常无法执行时抛出的异常HttpConfiguration.MessageHandlers)基本上,如果异常将导致500内部服务器错误返回到客户端,我希望它被记录.实现Application_Error在Web窗体和MVC中完成了这项工作 - 我可以在Web Api中使用什么?
如何创建自定义app.config部分,它只是一个简单的add元素列表?
我找到了一些示例(例如,如何在app.config中创建自定义配置部分?),以查看如下所示的自定义部分:
<RegisterCompanies>
<Companies>
<Company name="Tata Motors" code="Tata"/>
<Company name="Honda Motors" code="Honda"/>
</Companies>
</RegisterCompanies>
Run Code Online (Sandbox Code Playgroud)
但是,我如何避免额外的集合元素("公司"),使其看起来与appSettings和connectionStrings部分相同?换句话说,我想:
<registerCompanies>
<add name="Tata Motors" code="Tata"/>
<add name="Honda Motors" code="Honda"/>
</registerCompanies>
Run Code Online (Sandbox Code Playgroud) 我的C#项目引用了第三方DLL,我有源代码.我可以以某种方式告诉Visual Studio该源代码的位置,例如,当我按下F12打开DLL中方法的定义时,它将打开源代码,而不是打开"类[来自元数据]"存根代码?
当BinaryFormatter反序列化流为对象,似乎没有调用构造函数来创建新的对象.
它是怎么做到的?为什么?.NET中还有其他功能吗?
这是一个演示:
[Serializable]
public class Car
{
public static int constructionCount = 0;
public Car()
{
constructionCount++;
}
}
public class Test
{
public static void Main(string[] args)
{
// Construct a car
Car car1 = new Car();
// Serialize and then deserialize to create a second, identical car
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, car1);
stream.Seek(0, SeekOrigin.Begin);
Car car2 = (Car)formatter.Deserialize(stream);
// Wait, what happened?
Console.WriteLine("Cars constructed: " + Car.constructionCount);
if …Run Code Online (Sandbox Code Playgroud) 我刚刚使用代码优先模型从Entity Framework 6.0.2升级到6.1.0.
升级后,context.Database.CompatibleWithModel(true)返回false,因此EF认为数据库不再与模型兼容.我没有改变任何其他东西,只是升级了EF.
我跑去Add-Migration看看会发生什么,EF创建了一个大的迁移,似乎在每个表的每个外键属性上创建一个索引:
public override void Up()
{
CreateIndex("dbo.ActivityStreams", "UserId");
CreateIndex("dbo.Users", "OfficeId");
CreateIndex("dbo.Offices", "ParentId");
CreateIndex("dbo.Rosters", "UserId");
...and many more similar lines...
Run Code Online (Sandbox Code Playgroud)
我想这与EF 6.1中的新索引功能有关?有点奇怪,但还行.
当我Update-Database应用新迁移时,存在索引已存在的错误.查看数据库和以前的迁移,几乎所有索引确实已经存在.
我在这做错了什么?是否有升级EF的程序?
我有一个包含一些项目的解决方案,其中一个是网站.当我运行其中一个非Web项目(例如控制台应用程序)时,ASP.NET Development Server仍会启动.
我确定在某个地方有一个选项 - 如果我在运行Web项目时如何启动ASP.NET Development Server?
这段代码有效,但效率低下,因为它重复查找ignored字典。如何TryGetValue()在 LINQ 语句中使用字典方法使其更高效?
IDictionary<int, DateTime> records = ...
IDictionary<int, ISet<DateTime>> ignored = ...
var result = from r in records
where !ignored.ContainsKey(r.Key) ||
!ignored[r.Key].Contains(r.Value)
select r;
Run Code Online (Sandbox Code Playgroud)
问题是我不确定如何在 LINQ 语句中声明一个用于 out 参数的变量。
在Ward的文章" The Breeze Server:Have it your way "中:
典型的业务应用程序至少有200个域模型类型.我通过网络发送的数据形状的90%以上与我的业务模型中的实体形状相同.
...
当客户端实体的形状与服务器端业务实体的形状不一致时,我可能会针对该特定情况切换到DTO.
对于我们的应用而言,这可以直接敲击头部,但是为DTO 切换一些实体的最佳方法是什么?
例如,我们的用户实体包含不应向客户端公开的敏感属性.它还具有从其他系统中提取并返回到客户端的相关数据,理想情况下,这些数据应该是客户端User对象的额外属性.用户似乎是切换到DTO的理想候选者.
如果用户是一个孤立的实体,这可能会更容易,但问题是用户基本上在模型中的任何地方被引用.例如,几乎每个实体都有一个CreatedBy属性.
有没有办法在模型中的任何位置切换用户DTO的用户实体?对于模型中引用用户的所有其他实体,我们仍然需要能够在扩展其用户属性的情况下加载它们,在这些用户属性上查询它们,并通过对这些用户属性的更改来保存它们.
除了构建与实体模型95%相同的大型DTO模型之外,我不确定如何做到这一点,并且在它们之间有一些映射代码/框架.但是,正如沃德在这篇文章中所说的那样,"我不喜欢每种类型的DTO;这种过度杀伤可能会破坏生产力."
如何编写与大小写字母的所有组合中的特定字符串匹配的正则表达式,除了一个?
例如,取字符串" SuperMario ".在大写和小写字母的所有其他组合中,正则表达式与该字符串匹配的是什么?
正则表达式应匹配:
正则表达式不匹配:
Perl兼容正则表达式首选.
有没有办法选择一系列常量,例如1到100之间的每个整数,或两个日期之间的每个月?
而不是这样做......
select '2010-01-01' union
select '2010-02-01' union
select '2010-03-01' union
select '2010-04-01' union
select '2010-05-01' union
select '2010-06-01' union
select '2010-07-01' union
select '2010-08-01' union
select '2010-09-01' union
select '2010-10-01' union
select '2010-11-01' union
select '2010-12-01'
Run Code Online (Sandbox Code Playgroud) c# ×4
c#-4.0 ×2
constructor ×2
app-config ×1
asp.net ×1
breeze ×1
debugging ×1
dto ×1
java ×1
linq ×1
reference ×1
regex ×1
sql ×1
trygetvalue ×1
tryparse ×1