小编ser*_*0ne的帖子

Visual Studio展开/折叠键盘快捷键

在Visual Studio中,如果我打开了代码文件,我可以按CTRL+ MCTRL+ M+ O折叠所有代码块,区域,命名空间等.

如何做相反的事情并扩展一切?

我用Google搜索了这个,但似乎找不到有效的捷径!

keyboard-shortcuts visual-studio visual-studio-2012

185
推荐指数
7
解决办法
14万
查看次数

从Windows窗体转换为WPF

很长一段时间以来,我一直坚持使用Windows Forms开发(从VB6开始,一直到C#.NET 4.5),而且我已经达到了Windows Forms可以做的极限,两者都使用纯.NET和本机代码的特殊效果.

我知道WPF是未来(目前),Windows Forms正在放慢成为一种被弃用的技​​术.

我曾经尝试过学习WPF和XAML,但是我遇到了WPF的新设计师......与Windows Forms设计师相比,它似乎很难使用...当然......这只是一个学习曲线,在某些时候,我打算继续学习WPF.

与此同时,我想知道.NET的WPF设计器是否有更适合Windows Forms开发人员的替代方案?

c# windows wpf windows-forms-designer winforms

112
推荐指数
5
解决办法
7万
查看次数

在TypeScript中扩展功能

可能重复:
原型如何在打字稿上扩展?

我目前正在学习TypeScript,并想知道如何向现有对象添加功能.假设我想为String对象添加Foo的实现.在JavaScript中我会这样做:

String.prototype.Foo = function() {
    // DO THIS...
}
Run Code Online (Sandbox Code Playgroud)

理解TypeScript类,接口和模块是开放式的,这使我尝试以下方法,但没有成功

1.从TypeScript引用JavaScript实现

    JavaScript:

    String.prototype.Foo = function() {
        // DO THIS...
    }

    TypeScript:

    var x = "Hello World";
    x.Foo(); //ERROR, Method does not exist
Run Code Online (Sandbox Code Playgroud)

2.扩展界面

interface String {
    Foo(): number;
}

var x = "Hello World";
x.Foo(); //Exists but no implementation.
Run Code Online (Sandbox Code Playgroud)

3.扩展课程

class String {
    Foo(): number {
        return 0;
    }
}

// ERROR: Duplicate identifier 'String'
Run Code Online (Sandbox Code Playgroud)

从这些结果可以看出,到目前为止,我已经能够通过接口契约添加方法,但没有实现,因此,如何定义和实现我的Foo方法作为预先存在的String类的一部分?

javascript typescript

46
推荐指数
1
解决办法
3万
查看次数

依赖性倒置原则(SOLID)与封装(OOP的支柱)

我最近讨论了依赖性倒置原则,控制反转依赖注入.关于这个主题,我们一直在争论这些原则是否违反了OOP的一个支柱,即封装.

我对这些事情的理解是:

  • 依赖倒置原则意味着,对象应该依赖于抽象,而不是结核-这是在其控制模式和依赖注入的反转实现的基本原则.
  • 控制反转是依赖性反转原则的模式实现,其中抽象依赖性替换具体的依赖性,允许在对象之外指定依赖性的具体化.
  • 依赖注入是一种实现控制反转并提供依赖性解析的设计模式.将依赖项传递给依赖组件时会发生注入.实质上,依赖注入模式提供了一种将依赖抽象与具体实现耦合的机制.
  • 封装是一个过程,通过这个过程,更高级别对象所需的数据和功能被隔离并且不可访问,因此,程序员不知道如何实现对象.

辩论与以下声明达成了共识:

IoC不是OOP,因为它打破了封装

就个人而言,我认为所有OOP开发人员应该虔诚地遵守依赖倒置原则和控制反转模式 - 我遵循以下引用:

如果有(可能)不止一种方法给猫皮肤,那么就不要 表现得像只有一只猫.

例1:

class Program {
    void Main() {
        SkinCatWithKnife skinner = new SkinCatWithKnife ();
        skinner.SkinTheCat();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我们看到封装的一个例子.程序员只需要打电话Main(),猫就会被剥皮,但是如果他想给猫咪涂上一层锋利的牙齿呢?

例2:

class Program {
    // Encapsulation
    ICatSkinner skinner;

    public Program(ICatSkinner skinner) {
        // Inversion of control
        this.skinner = skinner;
    }

    void Main() {
        this.skinner.SkinTheCat();
    }
}

... new Program(new SkinCatWithTeeth());
    // Dependency Injection
Run Code Online (Sandbox Code Playgroud)

在这里,我们观察依赖性反转原理和控制反转,因为提供了abstract( …

oop encapsulation design-patterns inversion-of-control solid-principles

43
推荐指数
2
解决办法
4585
查看次数

为什么 .NET 中每次执行时字符串哈希码都会发生变化?

考虑以下代码:

Console.WriteLine("Hello, World!".GetHashCode());
Run Code Online (Sandbox Code Playgroud)

第一次运行:

139068974

第二次运行:

-263623806

现在考虑用 Kotlin 编写的相同内容:

println("Hello, World!".hashCode())
Run Code Online (Sandbox Code Playgroud)

第一次运行:

1498789909

第二次运行:

1498789909

为什么string.NET 中的每次执行的哈希码都会发生变化,但在其他运行时(如 JVM)上却不会发生变化?

c# hashcode gethashcode

39
推荐指数
2
解决办法
3628
查看次数

字符串文字匹配bool重载而不是std :: string

我正在尝试编写一个包含一些重载方法的C++类:

class Output
{
public:
    static void Print(bool value)
    {
        std::cout << value ? "True" : "False";
    }

    static void Print(std::string value)
    {
        std::cout << value;
    }
};
Run Code Online (Sandbox Code Playgroud)

现在让我说我调用方法如下:

Output::Print("Hello World");
Run Code Online (Sandbox Code Playgroud)

结果就是这样

真正

那么,为什么,当我定义该方法可以接受布尔值和字符串时,当我传入一个非布尔值时,它是否使用布尔重载?

编辑:我来自C#/ Java环境,对C++来说还是新手!

c++ string boolean overloading overload-resolution

35
推荐指数
3
解决办法
4468
查看次数

JavaScript,JScript和ECMAScript之间有什么区别?

好的,所以我正在努力学习JavaScript,以便我可以编写好的,干净的客户端代码,但每当我认为我正在取得进展时,有些东西会让我陷入困境!

我想知道:

  1. JavaScript,ECMAScript和JScript有什么不同?

  2. 我应该把重点放在学习上?

  3. 如果这些是版本化的,我应该支持哪个版本?

  4. 是否有必要/读取的真正好的参考(网络/书籍等)?

  5. 我如何确保我所写的内容符合所有主流浏览器(IE,FF,Safari,Chrome,Opera等)?

  6. 最重要的......是否有核心对象(数组,数字等)的参考,所以我知道已经实现了什么以及我自己需要做什么?

谢谢.

javascript jscript

32
推荐指数
1
解决办法
2万
查看次数

如何在JavaScript中"实例化"原始字符串(字符串文字)

在JavaScript中,我可以通过以下方式声明字符串;

var a = "Hello World";
var b = new String("Hello World");
Run Code Online (Sandbox Code Playgroud)

但是a不是String的实例......

console.log(a instanceof String); //false;
console.log(b instanceof String); //true;
Run Code Online (Sandbox Code Playgroud)

那么如何找到类型或" instanceof"字符串文字?

可以强制JavaScript new String()为每个字符串文字创建一个?

javascript string instanceof string-literals

31
推荐指数
3
解决办法
3万
查看次数

删除Visual Studio中未使用的代码

关于这个问题:" 删除未使用的引用(!="using") ",我想知道是否有一个工具可以从Visual Studio解决方案中删除未使用的类,结构,委托等.

场景:

我有一个无组织的Visual Studio解决方案,包含1000个:

  • 本机方法导入
  • 结构
  • 代表
  • 枚举

而不是拖动每个文件点击"查找所有引用"并确定代码是否在某处使用,是否有任何机制可以轻松删除冗余代码文件?

例:

//This class contains a method called getRandomValue which returns type RANDOM
public class NativeMethods
{
    [DllImport("random.dll")]
    public static extern RANDOM getRandomValue();
}

//This is the RANDOM object as referenced by getRandomValue();
[StructLayout(LayoutKind.Sequential)]
public struct RANDOM
{
    uint a;
    uint b;
    uint c;
}

//This is redundant since nothing is referencing it.
[StructLayout(LayoutKind.Sequential)]
public struct MESSAGE
{
    IntPtr sender;
    IntPtr recipient;
    char[] mText;
}
Run Code Online (Sandbox Code Playgroud)

注意自我:

我的直觉是,这将是棘手的,因为与Java不同,对象名称不必与文件名相同,并且多个对象声明可以驻留在单个文件中,但是在这个实例中(我的场景)每个对象都是在其自己的文件中声明(具有相同的名称).

.net c# code-cleanup visual-studio-2010 visual-studio

30
推荐指数
2
解决办法
3万
查看次数

使用TypeScript扩展Object.prototype

我目前正在开发TypeScript API,它需要一些绑定到Object原型(Object.prototype)的附加功能.

请考虑以下代码:

class Foo {

}

interface Object {
    GetFoo(): Foo;
    GetFooAsString(): string;
}

//This is problematic...
Object.prototype.GetFoo = function() {
    return new Foo();
    // Note, this line is just for testing...I don't want my function to just return a blank instance of Foo!
}

//This is ok.
Object.prototype.GetFooAsString = function () {
    return this.GetFoo().toString();
}
Run Code Online (Sandbox Code Playgroud)

您可能想直接在Playground尝试这个.

如你所见,我有一个叫做的类Foo(不是我将要使用的实际对象名).我还扩展了Object界面以包含两个新功能.最后我实现了针对prototype这些功能(这些工作在纯JavaScript中,它只是抱怨的TypeScript).

我在其中注释" //这是有问题的...... "TypeScript用红色波浪形突出显示,并显示以下错误:

Cannot convert '() => Foo' to '{ (): Foo; (): …
Run Code Online (Sandbox Code Playgroud)

javascript prototype interface object typescript

28
推荐指数
3
解决办法
4万
查看次数