Tag: C#的

C编译和执行程序有什么区别?

如果一个expression式的评估在C中导致了未定义的行为,并且该expression式总是在程序执行时被评估(例如,如果它出现在main的开头),那么它是否符合,如果一个实现在编译时拒绝它? 在编译/翻译一个程序和执行它之间,C有区别吗? 我知道有C的口译员。他们如何处理C标准有关这种差异? 示例(读取未初始化的本地) int main() { int i; return i; } 当运行它时,在执行的任何阶段(甚至在调用main之前),程序都可以做一些有趣的事情。 但是当我们甚至没有试图运行它时,也会发生一些有趣的事情吗? 它可以导致编译器本身的缓冲区溢出?

在Silverlight / WPF中将元素转发(Z索引)

我在网上find的所有设置Z-Index的文档和示例都使用了一个Canvas元素作为容器。 我的项目是在一个DataTemplate的ItemsControl容器内的边界元素。 我使用MouseEnter和MouseLeave事件来触发ScaleTransform.ScaleX和ScaleTransform.ScaleY上的animation,以便它们在徘徊时增长。 由于它们被resize并与容器中的其他项目占据相同的空间,所以最近添加的项目与旧项目(与当前resize的项目相对)重叠。 有没有一种清洁的方式,使我的animation在代码中向前移动当前项目,以便在resize时重叠所有其他项目?

我可以使用匿名类的属性吗?

我有一个匿名的类: var someAnonymousClass = new { SomeInt = 25, SomeString = "Hello anonymous Classes!", SomeDate = DateTime.Now }; 反正有附加属性到这个类? 反思,其他? 我真的希望有这样的事情: var someAnonymousClass = new { [MyAttribute()] SomeInt = 25, SomeString = "Hello anonymous Classes!", SomeDate = DateTime.Now };

如何在不重新打印的情况下更新terminal中的打印消息(Linux)

我想为我的terminal应用程序制作一个进度条,其工作原理如下: [XXXXXXX ] 这将给出一个视觉指示,说明在这个过程完成之前剩下多less时间。 我知道我可以通过将它们添加到string然后简单地printf,而打印越来越多的X,但是看起来像这样: [XXXXXXX ] [XXXXXXXX ] [XXXXXXXXX ] [XXXXXXXXXX ] 或类似的东西(显然你可以玩间距)。但这不是视觉美学。 有没有办法用新文本更新terminal中的打印文本,而不需要重新打印? 这是所有在Linux下,C ++。

所有派生类共享的基类中是否有静态variables?

如果我有类似的东西 class Base { static int staticVar; } class DerivedA : public Base {} class DerivedB : public Base {} DerivedA和DerivedB共享相同的DerivedA DerivedB吗?还是他们各自拥有? 如果我希望他们每个人都有自己的,你会推荐我做什么?

为什么.NET值types是密封的?

从C#结构中inheritance是不可能的。 这不是很明显,为什么这是: 显然你不能有一个从值typesinheritance的引用types; 这是行不通的 从原始types(Int32,Double,Char等)中inheritance它是不合理的。 你需要能够使用派生实例调用基类(非虚函数)。 你可以从派生的结构体转换到基体,因为它们会重叠相同的内存。 我猜从基础铸造派生将无法正常工作,因为你不知道在运行时派生的结构types。 我可以看到你不能在你的类层次结构中实现虚拟方法,因为值types不能有虚拟成员 我不知道这是CLR的技术限制,还是C#编译器阻止你做的事情? 编辑:值types不能有虚拟方法,我意识到这种限制排除了大多数情况下,你想使用inheritance。 尽pipe如此,这仍然留下了inheritance。 想象一下带有Colour字段的Shape结构体:我可以编写接受任何从Shape派生的结构体的代码,并访问它的Colour字段,即使我永远不会写一个虚拟的Shape.Draw方法。 我可以想象一个会被非密封值types破坏的场景。 值types应该正确实现Equals和GetHashCode ; 即使System.Object上的这两个方法是虚拟的,它们也会在值types上被非虚拟调用。 即使值types不封闭,写一个从另一个派生的结构的人也不能编写他们自己的这两个方法的实现,并希望正确地调用它们。 我应该指出,我并不是说我应该能够从自己的代码中inheritance结构。 但是我想要做的是猜测为什么这个特定的代码被.NET禁止。 编辑2:我刚刚发现了这个非常类似的问题 ,答案是有效的,因为那么价值types的数组将不起作用。

为什么要主要是静态的?

我试图在C#中创buildpublic void Main() 它说没有静态无效主要发现 。 Main是静态的意味着什么? 我知道public static void Main()的代码工作正常。 但为什么Main必须是static ?

DotNetOpenAuth不适用于MVC 5 RC

我一直在DotNetOpenAuth工作很多。 首先我们使用了5.0.0-alpha1,但是我们切换到了v4.0.30319,因为我们无法find导致我们问题的原因。 我们正在Visual Studio 2013中使用MVC 5 RC在.NET 4.5.1 RC上构build一个C#Web API项目。我们实现了IAuthorizationServerHost , INonceStore和ICryptoKeyStore 。 我们遇到的问题是围绕以下情况: public class TokensController : Controller { private readonly AuthorizationServer authorizationServer = new AuthorizationServer(new MyAuthorizationServer()); /// <summary> /// This action will handle all token requests. /// </summary> /// <returns>The action result that will output the token response.</returns> [HttpPost] public ActionResult Index() { […]

在Typescript中声明委托types

来自C#背景,我想创build一个数据types,定义一个函数签名。 在C#中,这是一个如下所示的delegate : delegate void Greeter (string message); public class Foo { public void SayHi (Greeter g) { g("Hi!"); } } 现在,我想在Typescript中达到类似的效果。 我知道Typescript没有委托types,但只有lambdaexpression式。 我想出了这样的事情: class Foo { SayHi (greeter: (msg: String) => void) { greeter('Hi!'); } } 虽然这个工作,我想重复使用方法签名(msg:String) => void的几次,并认为它会更清洁创build一个自定义types – 就像在C#中的委托。 任何想法如何做到这一点?

'await'操作符只能在asynchronouslambdaexpression式中使用

我有ac#的Windowsapp store应用程序。 我试图启动一个MessageDialog时,另一个MessageDialog中的命令button之一被点击。 关键是要警告用户他们的内容是未保存的,如果他们点击取消,则会提示他们使用单独的保存对话框进行保存。 这是我的“showCloseDialog”函数: private async Task showCloseDialog() { if (b_editedSinceSave) { var messageDialog = new MessageDialog("Unsaved work detected. Close anyway?", "Confirmation Message"); messageDialog.Commands.Add(new UICommand("Yes", (command) => { // close document editor.Document.SetText(TextSetOptions.None, ""); })); messageDialog.Commands.Add(new UICommand("No", (command) => { // save document await showSaveDialog(); })); messageDialog.DefaultCommandIndex = 1; await messageDialog.ShowAsync(); } } 在VS我得到一个编译器错误: 'await'操作符只能在asynchronouslambdaexpression式中使用。 […]