小编Jon*_*ood的帖子

无法修改struct成员

我对编程并不陌生,但我对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)

c# struct

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

将Nullable Bool渲染为CheckBox

我是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)

标签与复选框正确关联,以便单击文本将切换复选框.

asp.net-mvc asp.net-mvc-3

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

无法计算所有者绘制文本中的位置

我正在尝试使用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)

c# winapi gdi+ gdi winforms

7
推荐指数
1
解决办法
889
查看次数

动态修改LINQ查询中的Where条件

以下实体框架查询运行时没有错误.

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)

c# linq entity-framework predicate

7
推荐指数
1
解决办法
1973
查看次数

确定变量使用的字节数

我有以下数组:

byte[][] A = new byte[256][];
Run Code Online (Sandbox Code Playgroud)

此数组的每个元素都引用另一个数组.

A[n] = new byte[256];
Run Code Online (Sandbox Code Playgroud)

但是,大多数元素引用相同的数组.实际上,数组A仅引用两个或三个唯一数组.

有没有一种简单的方法来确定整个事物使用多少内存?

.net c# arrays memory-management

6
推荐指数
1
解决办法
740
查看次数

没有度假的全文搜索结果的返回页面?

我有一个类似于以下的查询来返回与全文搜索匹配的文章.在生产中,文本[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)

sql-server full-text-search

6
推荐指数
1
解决办法
328
查看次数

C++中的运算符的返回类型是什么?

我正在阅读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".有人可以详细说明,有关的事情吗?

c++ operator-overloading

6
推荐指数
1
解决办法
247
查看次数

如何使用LINQ获得多个总计

假设我在数据库中有以下数据.

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# sql linq group-by

6
推荐指数
1
解决办法
60
查看次数

在派生类中使用基础构造函数的任何方法?

在过去的十年或二十年中使用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)

但这似乎是很多打字,特别是如果我打算从基类派生许多类.

基类仍然需要这些或那些参数.有没有办法不必为每个派生类重写这个参数,或者"暴露"基础构造函数,或者我必须像以前一样完全按照这样做?

c++ inheritance constructor

6
推荐指数
1
解决办法
1099
查看次数

在 Visual Studio Professional 2017 中提交单个文件

我正在使用存储在 Github 上的应用程序。我想提交一个文件。这似乎是微不足道的,但我不知道它是如何完成的。

如果我右键单击要提交的文件并选择 Commit 命令,它似乎显示所有修改过的文件都将被签入。当我开始输入提交消息时,将启用一个 Commit All 按钮/下拉菜单。但是下拉菜单没有提交少于所有内容的选项。

在此处输入图片说明

这当然是支持的。

git github visual-studio visual-studio-2017

6
推荐指数
1
解决办法
3386
查看次数