我希望能够删除我在VIM中光标位置开始的行的剩余部分.有这么简单的命令吗?
为了帮助说明,这是在命令之前.
The quick brown dog jumps over the lazy fox.
^
|----- Cursor is here.
Run Code Online (Sandbox Code Playgroud)
这是在命令之后
The q
^
|----- Cursor is here.
Run Code Online (Sandbox Code Playgroud) 我理解为什么要使用以下语法来使用只读属性:
private int _MyInt;
public int MyInt
{
get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)
这个例子可能不是最好的例子,因为我认为只读属性真的与readonly变量一起发光,但这不是重点.我不明白的是为什么使用以下语法使用只写属性:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
}
Run Code Online (Sandbox Code Playgroud)
这是各种书籍和教程中描述只读属性的方式.如果设置了变量,你会在概念上阅读一些点,至少在内部的类,但该类中甚至在内部读它,你会被accesssing这样做_MyInt,我觉得违反了封装的精神,性质试图强制执行.相反,为什么不只是使用具有不同访问修改的属性的全部功能来访问它:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
private get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)
当然可以写出来
public int MyInt { set; private get; }
Run Code Online (Sandbox Code Playgroud)
您仍然可以获得封装,但是限制其他类访问,因此它仍然只能写入外部类.
除非有一种情况,你真诚地希望分配给一个变量,但从未实际访问它,在这种情况下,我肯定会对何时出现这种需求感到好奇.
我是一个新的单元测试,使用Microsoft.VisualStudio.TestTools.UnitTesting;
该0.GetType()实际上是System.RuntimeType,那么什么样的测试,我需要写通Assert.IsInstanceOfType(0.GetType(), typeof(int))?
---跟进,这是我自己的用户错误... Assert.IsInstanceOfType(0, typeof(int))
以前,我确信你不能这样做,但前几天我正在玩一些代码,它似乎编译和工作.我只是想证实我不仅仅是幸运.模板类可以有一个纯虚函数 - 我想这也意味着普通的虚方法对于析构函数也是有效的吗?
template <typename WordType> class DataSource
{
public:
DataSource();
DataSource(DataSource const& other);
virtual ~DataSource();
virtual void Put(
WordType const* const data,
unsigned int const wordCount) = 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试在网上查找它了,我能找到的就是你不能在正常的类中使用虚拟方法(纯或其他),例如:
class DataSource
{
public:
DataSource();
DataSource(DataSource const& other);
virtual ~DataSource();
template <typename WordType>
virtual void Put(
WordType const* const data,
unsigned int const wordCount) = 0;
}
Run Code Online (Sandbox Code Playgroud)
而这是由于管理虚拟表以引用此方法将实现的所有不同类型的可能类型的不可能性.
但是,当涉及模板类的虚拟成员函数时,它似乎是不同的,因为当模板类变量被实例化时,整个类本身通过模板参数"创建".此时,由于模板的"查找和替换"性质,虚拟方法就像任何其他类的方法一样.
无论如何,如果它丢失在那里再次说明问题:在tempate类中是否允许虚拟(纯和/或正常)虚拟函数?
.NET 3.5(WCF或其他)是否提供任何类型的推送通知服务?
我有一个服务器和一个客户端.我希望服务在服务器上运行,如果x发生,则将通知推送到客户端.我不想每x分钟拉一次服务器来收集信息.
我们最近将Visual Studio从2010年升级到2013年,除了一件事以外,一切似乎都和以前一样.2010年,代码签名仅在发布项目时执行,但在2013年,它希望每次构建项目时都对输出程序集进行签名.
我在尝试在网上找到任何有关此问题的结果时遇到问题,一切只指向如何首先设置签名,而不是如何防止在正常调试版本中签名.
我创建了一个新项目并开始使用这些设置来确定在正常构建期间可能触发签名要求的单个设置.在"安全"选项卡下的项目属性页面中,如果选中"启用ClickOnce安全设置"复选框,则2013需要签名步骤,但2010似乎没有该要求.
我仍然需要确认这是否是这种行为的唯一决策点.
证实.
我用一个空的WinForms应用程序创建了两个解决方案.一个解决方案是在Visual Studio 2010中创建的,另一个是在Visual Studio 2013中创建的.我进入每个项目属性并通过签名选项卡启用签名,然后在"安全"选项卡中选中"启用ClickOnce安全设置".是一个完全信任的申请".请注意,项目正在使用启用了PIN的智能卡上的证书进行签名.
在调试模式下正常构建期间,VS 2013会提示输入智能卡PIN,而2010年则没有.现在的问题基本上是为什么两个版本之间存在差异,以及如何在2013年解决这个问题,以表现得像2010年.
我包含了我在下面创建的测试解决方案的项目文件.比较差异并不意味着任何明显不同的东西.我还尝试将VS 2013项目更改为与VS 2010项目相同的框架,以最大限度地减少项目之间的差异 - 这不会改变行为差异.
Visual Studio 2010项目文件
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{E31DA60C-E444-4E34-AF6D-5B4588CC1F8E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SigningTest1</RootNamespace>
<AssemblyName>SigningTest1</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> …Run Code Online (Sandbox Code Playgroud) clickonce code-signing visual-studio-2010 visual-studio-2013
我找不到任何可以给出明确答案的东西.我只是好奇,如果std :: vector只在绝对必须时重新分配它的内部数组,或者它会在预期中提前重新分配(可以这么说).
例如:
std::vector<int> myVector;
for (int i = 0; i < 1000; ++i) myVector.push_back(i);
cout << myVector.size() << '\n' // Gives 1000 as expected
<< myVector.capacity() << endl; // Gives 1024 which makes sense
Run Code Online (Sandbox Code Playgroud)
如果我继续添加元素,是否有可能我添加的下24个项目中的一个会改变容量,或者只有在我放入第25个项目后它才会重新分配?
注意:
我在Linux下使用gcc 4.4.3进行了测试,但似乎重新分配是"按需"完成的,但我很好奇我是不是很幸运,或者有什么东西说明这是预期的行为.
我已经习惯了Java中的GUI框架以及QT GUI框架,我已经习惯了各种布局管理器.C#似乎没有内置布局管理器,或者我错过了什么?
我只是想向这个问题的任何读者指出,在后视中,我的问题是错误的.通过适当地锚定和对接子控件,需要Java和QT4的布局管理器几乎不存在.
我知道,对于每个类初始化,每个类都将扩展对象类.这是否意味着JVM将为自定义类和Object类创建一个对象?任何人都可以非常清楚地解释这个类的初始化过程.
编辑:
因此,如果我将任何超类扩展到子类,这个超类是否占用了子类的相同内存?
为什么这个断言失败了?
Assert.AreEqual( Color.Red, Color.FromArgb( Color.Red.A, Color.Red.R, Color.Red.G, Color.Red.B ) );
Run Code Online (Sandbox Code Playgroud)