相关疑难解决方法(0)

在构建POCO或简单DTO时,我可以使用结构而不是类吗?

 public class Customer
    {
        public int CustomerId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public struct Customer
    {
        public int CustomerId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

c#

13
推荐指数
1
解决办法
1722
查看次数

结构实现接口时会发生什么的详细信息

我最近遇到了这个Stackoverflow问题:何时使用struct?

在其中,它有一个答案,说了一些有点深刻的东西:

另外,要意识到当一个struct实现一个接口 - 就像Enumerator那样 - 并且被强制转换为该实现类型时,该struct将成为一个引用类型并被移动到堆中.在Dictionary类的内部,Enumerator仍然是一个值类型.但是,只要方法调用GetEnumerator(),就会返回引用类型的IEnumerator.

这究竟是什么意思?

如果我有类似的东西

struct Foo : IFoo 
{
  public int Foobar;
}

class Bar
{
  public IFoo Biz{get; set;} //assume this is Foo
}

...

var b=new Bar();
var f=b.Biz;
f.Foobar=123; //What would happen here
b.Biz.Foobar=567; //would this overwrite the above, or would it have no effect?
b.Biz=new Foo(); //and here!?
Run Code Online (Sandbox Code Playgroud)

究竟什么值类型结构的详细语义被视为引用类型?

.net c# struct boxing value-type

13
推荐指数
2
解决办法
7445
查看次数

在ASP.NET中重写URL?

我正在使用ASP.NET C#.

如何实现类似于StackOverflow.com的URL重写过程?

http://stackoverflow.com/questions/358630/how-to-search-date-in-sql
Run Code Online (Sandbox Code Playgroud)

此外,URL中的"358630"等值的含义是什么?这是问题ID(他们用来从表中获取数据的基础)?无论是什么,在我的应用程序中,我使用"ID"字段识别记录.该字段是SQL表中的标识列.现在,我的网址如下:

http://myweb.com/showdetails.aspx?id=9872
Run Code Online (Sandbox Code Playgroud)

但我希望他们看起来像:

http://myweb.com/showdetails/9872/my_question_title
Run Code Online (Sandbox Code Playgroud)

要么:

http://myweb.com/9872/my_question_title
Run Code Online (Sandbox Code Playgroud)

或者无论什么最好的方式,这将很好地搜索机器人.

我的应用程序托管在Go Daddy的共享托管服务上,我觉得没有自定义的ASP.NET"HTTP模块"或没有用于URL重写的自定义DLL正在他们的服务器上运行.我尝试了很多样品,但没有运气!

我发现Stack Overflow托管在Go Daddy(共享主机?)上.也许Stack Overflow的方法对我有用.

c# asp.net web-config url-rewriting

12
推荐指数
1
解决办法
1636
查看次数

何时使用记录结构而不是结构,反之亦然?

我最近发现了C# 中的关键字,并且发现如果我理解正确的话,record它可以用作值类型而不是引用类型。record struct

但是,我很难理解何时确切使用而record struct不仅仅是struct. 据我所知,record struct具有一些结构没有的基本实现(例如==and!=运算符、对 的重写ToString以及其他一些东西),但这就是两者之间的区别吗?如果不是,在决定使用其中一种时需要考虑什么?

从我目前看到的方式来看,最好始终使用record structjust 来利用它已经附带的那些实现。

c# struct c#-9.0 c#-record-type c#-10.0

12
推荐指数
1
解决办法
3626
查看次数

在C#中,使用值类型与引用类型

我的问题是:

  • 我们什么时候应该使用值类型和引用类型?
  • 一个优于其他的优点和缺点是什么?
  • 如果在任何地方使用引用类型怎么办 它有什么危害吗?

还请讨论每个的优点和缺点.我也想了解这一点.

c# class-design value-type reference-type

10
推荐指数
3
解决办法
3537
查看次数

不可变类与不可变结构

我有一个开始生活可变的课程,但我已经让它变得一成不变.我应该改成它struct吗?选择一个而不是另一个需要考虑哪些因素?我的特殊情况是一个Point类型类(它代表一个自定义坐标系中的坐标),由4个int字段组成,加上一些属性以不同的方式访问相同的数据.我注意到这String是一个类并且是不可变的,因此必须有一些用例.

c# immutability

10
推荐指数
1
解决办法
1421
查看次数

不需要分配结构类型的out参数

在代码检查过程中意外注释掉函数中的一行时,我注意到我的代码有些奇怪的行为。复制非常困难,但在此我将描述一个类似的示例。

我有这个测试课:

public class Test
{
    public void GetOut(out EmailAddress email)
    {
        try
        {
            Foo(email);
        }
        catch
        {
        }
    }

    public void Foo(EmailAddress email)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

没有分配给的电子邮件GetOut,通常会引发错误:

必须在控制离开当前方法之前将out参数'email'分配给

但是,如果EmailAddress在单独程序集中的结构中,则不会创建错误,并且一切都可以正常编译。

public struct EmailAddress
{
    #region Constructors

    public EmailAddress(string email)
        : this(email, string.Empty)
    {
    }

    public EmailAddress(string email, string name)
    {
        this.Email = email;
        this.Name = name;
    }

    #endregion

    #region Properties

    public string Email { get; private set; }
    public string Name { get; private set; }

    #endregion
} …
Run Code Online (Sandbox Code Playgroud)

.net c#

9
推荐指数
1
解决办法
320
查看次数

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

业务逻辑类

我在asp.net中遇到了几种编写业务逻辑的方法,但我想知道下面的两个例子,使用struct来存储类变量有什么好处:

namespace Shopping
{
   public struct ShoppingCart
   {
       public string Color;
       public int ProductId;
   }

   public partial class MyShoppingCart 
   {

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}
Run Code Online (Sandbox Code Playgroud)
namespace Shopping
{
   public partial class MyShoppingCart 
   {
       public string Color{ get; set; }
       public int ProductId{ get; set; }

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

打破项目创建方程链的链(可能带递归)

我一直在干扰C#中的一个想法来创建一个软件(用于伪个人使用),但遇到了实现问题.嗯......也许他们是我不知道的设计问题,但我只是简直无法弄清楚.

想法,期望和一般伪算法

考虑我们有以下"数据库":

Foo + Bar = Foobar
Baz + Qux = Bazqux
Foobar + Bazqux = Foobarbazqux
Run Code Online (Sandbox Code Playgroud)

这些是用于创建所述项目的配方.使用一个和一个,我们创建一个结果,可以进一步成为另一个食谱成分.FooBarFoobar

现在想我们需要找出该项目的完整配方Foobarbazqux.对于人类的思想和智慧,它相对容易:

We need Foobarbazqux
Foobarbazqux = Foobar + Bazqux
    Foobar = Foo + Bar
    Bazqux = Baz + Qux

Foobarbazqux = Foo + Bar + Baz + Qux
Run Code Online (Sandbox Code Playgroud)

当然,如果我们拥有所有成分,我们可以"运行" 配方,并按照上面几段的顺序创建项目并执行每个配方.(那样:我们首先创建Foobar,然后Bazqux将两者结合起来得到最终结果.)

但在现实的时候,数据库是很多大.我想这就是计算机应该进入的地方.通过一个可用的软件,机器可以轻松找到所有的成分和执行(制作)步骤并将其提供给用户,因此我们不需要通过所有条目来读取手.

实施(...尝试) …

c# algorithm recursion struct solver

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