我对编程并不陌生,但我对C#结构的理解似乎有一个漏洞.
任何人都可以解释为什么以下代码打印出"Dist1:0,Dist2:0"?
struct Distance
{
public void SetFeet(int feet) { Value = feet; }
public void SetMiles(float miles) { Value = (int)(miles * 5280f); }
public int GetFeet() { return Value; }
public float GetMiles() { return Value / 5280f; }
private int Value;
}
class Distances
{
public Distance Dist1 { get; set; }
public Distance Dist2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
Distances distances = new Distances();
distances.Dist1.SetFeet(1000);
distances.Dist2.SetFeet(2000);
Console.WriteLine("Dist1: {0}, …Run Code Online (Sandbox Code Playgroud) 我是WebForms到MVC的新手.我有类型的视图模型字段bool?,默认情况下,EditorFor()将此字段呈现为具有"未设置"选项的DropDownList.我更喜欢将其渲染为CheckBox,如果值为null,则将其设置为未选中.
字段名称是RFP.DatesFlexible,因此我在视图中编写了以下标记:
<input type="checkbox" id="RFP_DatesFlexible" name="RFP.DatesFlexible" />
<label for="RFP_DatesFlexible">My Dates are Flexible</label>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.结果始终为null并且ModelState.IsValid为false.
谁能说我怎么能做这个工作?
编辑
这是我最终得到的代码,似乎工作正常.
@Html.CheckBox("RFP.DatesFlexible", Model.RFP.DatesFlexible ?? false)
@Html.Label("RFP.DatesFlexible", "My Dates are Flexible")
Run Code Online (Sandbox Code Playgroud)
标签与复选框正确关联,以便单击文本将切换复选框.
我正在尝试使用Visual Studio 2012创建一个Windows窗体应用程序,可以将插入符放在所有者绘制的字符串中的当前位置.但是,我一直无法找到准确计算该位置的方法.
我之前在C++中成功完成了这项工作.我在C#中尝试了很多方法,但尚未能准确定位插入符号.最初,我尝试使用.NET类来确定正确的位置,但后来我尝试直接访问Windows API.在某些情况下,我走近了,但过了一段时间,我仍然无法准确地放置插入符号.
我创建了一个小型测试程序,并在下面发布了关键部分.我也在这里发布了整个项目.
使用的确切字体对我来说并不重要; 但是,我的应用程序采用单倍间距字体.任何帮助表示赞赏.
Form1.cs 这是我的主要形式.
public partial class Form1 : Form
{
private string TestString;
private int AveCharWidth;
private int Position;
public Form1()
{
InitializeComponent();
TestString = "123456789012345678901234567890123456789012345678901234567890";
AveCharWidth = GetFontWidth();
Position = 0;
}
private void Form1_Load(object sender, EventArgs e)
{
Font = new Font(FontFamily.GenericMonospace, 12, FontStyle.Regular, GraphicsUnit.Pixel);
}
protected override void OnGotFocus(EventArgs e)
{
Windows.CreateCaret(Handle, (IntPtr)0, 2, (int)Font.Height);
Windows.ShowCaret(Handle);
UpdateCaretPosition();
base.OnGotFocus(e);
}
protected void UpdateCaretPosition()
{
Windows.SetCaretPos(Padding.Left + (Position * …Run Code Online (Sandbox Code Playgroud) 以下实体框架查询运行时没有错误.
Predicate<Program> filterProgram;
if (programId.HasValue)
filterProgram = (p => p.Id == programId && !p.IsDeleted);
else
filterProgram = (p => !p.IsDeleted);
var analytics = (from a in repository.Query<Analytic>()
where (a.Marker == "Open" || a.Marker == "LastTouch") &&
a.EntityType == "Proposal" &&
a.Site == "C"
join p in repository.Query<Program>()
on a.EntityId equals p.Id
//where filterProgram(p)
group a
by new { a.LoginSessionId, a.EntityId, p.Id, p.Name } into g
let f = g.OrderBy(x => x.TimestampUtc).FirstOrDefault(x => x.Marker == "Open")
where f != null
let …Run Code Online (Sandbox Code Playgroud) 我有以下数组:
byte[][] A = new byte[256][];
Run Code Online (Sandbox Code Playgroud)
此数组的每个元素都引用另一个数组.
A[n] = new byte[256];
Run Code Online (Sandbox Code Playgroud)
但是,大多数元素引用相同的数组.实际上,数组A仅引用两个或三个唯一数组.
有没有一种简单的方法来确定整个事物使用多少内存?
我有一个类似于以下的查询来返回与全文搜索匹配的文章.在生产中,文本[FULL TEXT SEARCH CRITERIA]将替换为实际的全文搜索表达式.
编写查询只返回一页结果.
WITH ArtTemp AS (
SELECT TOP (@StartRow + @MaxRows) ROW_NUMBER() OVER (ORDER BY ArtViews DESC) AS RowID,
Article.ArtID,Article.ArtTitle,Article.ArtSlug,Category.CatID,Category.CatTitle,
Article.ArtDescription,Article.ArtCreated,Article.ArtUpdated,Article.ArtUserID,
[User].UsrDisplayName AS UserName FROM Article
INNER JOIN Subcategory ON Article.ArtSubcategoryID = Subcategory.SubID
INNER JOIN Category ON Subcategory.SubCatID = Category.CatID
INNER JOIN [User] ON Article.ArtUserID = [User].UsrID
WHERE [FULL TEXT SEARCH CRITERIA] AND Article.ArtApproved = 1
)
SELECT ArtID,ArtTitle,ArtSlug,CatID,CatTitle,ArtDescription,ArtCreated,ArtUpdated,
ArtUserID,UserName FROM ArtTemp
WHERE RowID BETWEEN @StartRow + 1 AND (@StartRow + @MaxRows)
ORDER BY RowID …Run Code Online (Sandbox Code Playgroud) 我正在阅读C++ Primer,在重载操作章节中,作者给出了一个例子:
// member binary operator: left-hand operand bound to implicit this pointer
Sales_item& Sales_item::operator+=(const Sales_item&);
// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);
Run Code Online (Sandbox Code Playgroud)
然后,作者解释说:
当应用于算术类型时,此差异与这些运算符的返回类型匹配:加法产生右值,复合赋值返回对左侧操作数的引用.
我不太确定" compound assignment returns a reference to the left-hand operand".有人可以详细说明,有关的事情吗?
假设我在数据库中有以下数据.
class Data
{
public int Category { get; set; }
public int ValueA { get; set; }
public int ValueB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何编写LINQ查询以获取所有行ValueA的总和以及ValueB所有行的总和Category == 1?
我知道我可以加载所有数据,然后使用Sum加载的数据,但更愿意在数据库中将它们合计.
我知道我可以使用,group by但我没有任何分组.我只想从数据中得到这两个总数.
在过去的十年或二十年中使用C#之后,我的C++变得有点生疏了.
如果我有以下内容:
class CBase
{
public:
CBase(LPCTSTR pszArg1, LPCTSTR pszArg2, LPCTSTR pszArg3);
virtual ~CBase();
// Etc...
};
class CDerived : CBase
{
// Etc...
};
Run Code Online (Sandbox Code Playgroud)
看来我无法创建一个实例CDerived.
没有构造函数"CDerived :: CDerived"的实例与参数列表匹配
我知道我可以显式创建派生构造函数:
CDerived::CDerived(LPCTSTR pszArg1, LPCTSTR pszArg2, LPCTSTR pszArg3)
: CBase(pszArg1, pszArg2, pszArg3)
{
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是很多打字,特别是如果我打算从基类派生许多类.
基类仍然需要这些或那些参数.有没有办法不必为每个派生类重写这个参数,或者"暴露"基础构造函数,或者我必须像以前一样完全按照这样做?
我正在使用存储在 Github 上的应用程序。我想提交一个文件。这似乎是微不足道的,但我不知道它是如何完成的。
如果我右键单击要提交的文件并选择 Commit 命令,它似乎显示所有修改过的文件都将被签入。当我开始输入提交消息时,将启用一个 Commit All 按钮/下拉菜单。但是下拉菜单没有提交少于所有内容的选项。
这当然是支持的。
c# ×5
c++ ×2
linq ×2
.net ×1
arrays ×1
asp.net-mvc ×1
constructor ×1
gdi ×1
gdi+ ×1
git ×1
github ×1
group-by ×1
inheritance ×1
predicate ×1
sql ×1
sql-server ×1
struct ×1
winapi ×1
winforms ×1