我开发了一款Android应用程序,我希望它既可以免费也可以付费.什么是最好的方法?
我可以想到三个解决方案:
问:哪种解决方案最好?为什么?
有些事情需要考虑:
我有List<>N个项目.我想得到第一个元素当且仅当N = 1.这可以使用lambda或其他一些好的构造来完成吗?
这有效,但看起来很糟糕:
var blah = new List<Object>() { new Object() };
var item = (blah.Count == 1 ? blah[0] : null);
Run Code Online (Sandbox Code Playgroud) 下面是一个检测两个圆是否相交的函数.我想将其更改为仅检测圆圈的periferi是否相交.因此,如果圆圈A 完全在圆圈B内,则没有碰撞!
怎么样?
private bool IsCircleCollision(
int x1, int y1, int radius1,
int x2, int y2, int radius2)
{
int dx = x2 - x1;
int dy = y2 - y1;
int distance = (dx * dx) + (dy * dy);
int radii = radius1 + radius2;
if (distance < radii * radii)
{
return true;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 在我的C#应用程序中,我连接到MySQL数据库并运行10,000个查询.如果我保持与数据库的连接,这些查询大约需要14秒.但是,如果我依赖连接池,我的查询大约需要15秒.(我已多次运行此测试.)
// Connection pooling.
using (var connection = CreateConnection())
{
connection.ConnectionString = ConnectionString;
connection.Open();
Run Code Online (Sandbox Code Playgroud)
网上的大多数样本都使用上面的"连接和关闭"结构.但是,似乎连接池比保持连接慢.所以问题是......
问:我为什么要使用连接池?
运行SQL Server 2005.一个软件与我们的数据库集成.不幸的是,他们选择直接进行SQL查询而不是使用存储过程.现在我们已经更改了我们的数据库方案,并且有问题的查询不再有效.
是否可以在SQL Server上运行时修补T-SQL?
例如,当SQL Server获取SELECT A FROM InvalidTable特定数据库时,查询将SELECT A FROM ValidTable在执行之前转换为.
编辑: 这是有问题的查询:
SELECT * FROM DataTable c JOIN Users u ON u.UserName = @P0 AND c.DepartmentID = b2.DepartmentID WHERE c.Status = 0哪里DepartmentID搬到了另一张桌子!
我有一个View派生类,在那里我绘制一个790x500(是的,这很奇怪,但它必须保持这种方式)直接在画布上的位图onDraw.这在我的Nexus S上看起来不错,但是当我在具有较小屏幕的设备上运行我的应用程序(例如Wildfire)时,我只看到位图的左上角部分.我在这里错过了什么?
这是一个类似游戏的应用程序,我在某些坐标上绘制了许多位图.我真的不想为LDPI,MDPI和HDPI设置不同的像素设置(我有充分的理由).
问:如何针对任何屏幕分辨率正确缩放我的位图?(将大屏幕的游戏屏幕居中可能是一个选项,但不是必须的.)例如,当我在320x240屏幕上绘制800x600图像时,图像会自动拉伸,当我以100x100输出像素时,它会变为40x40.
我正在设计一个带有几个返回对象列表的函数的类.我注意到,当我IEnumerable<T>转换为a 时,调试变得更容易,List<T>因为可以在Watch窗口中查看对象.但是,我不确定这是否是最佳做法IEnumerable.
问:哪个更好?
public IEnumerable<MyData> GetData()
{
return Foo();
}
public IEnumerable<MyData> GetData()
{
return Foo().ToList();
}
Run Code Online (Sandbox Code Playgroud) 我有一个LambdaExpression类型为Expression<Func<T, string>>. 代码的设计目前不允许我保留T,这意味着我被迫使用较慢的DynamicInvoke而不是Invoke.
因为我知道T我想要转换表达式的类型,以便它接受一个T对象,允许我使用Invoke. 如何?
这是一个好的开始
class Program
{
class MyClass
{
public string MyProperty => "Foo";
}
static LambdaExpression GetExpression(Expression<Func<MyClass, object>> expr)
{
return expr;
}
static void Main(string[] args)
{
var e1 = GetExpression(t => t.MyProperty);
var e2 = Expression.Lambda<Func<object, object>>(e1, e1.Parameters);
object myClass = new MyClass();
string s1 = (string)e1.Compile().DynamicInvoke(myClass);
object s2 = e2.Compile().Invoke(myClass);
}
}
Run Code Online (Sandbox Code Playgroud) 在我的C#文件中,我想要这样的预处理器条件:
#if DEMO
ShowSplash();
#endif
Run Code Online (Sandbox Code Playgroud)
我正在从命令行运行此命令:
MSBuild MySolution.sln /p:Configuration=Release /p:Platform="Any CPU" /p:DEMO=1
Run Code Online (Sandbox Code Playgroud)
然后,在MyProject.csproj文件中我有以下内容:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DefineConstants>TRACE;DEMO=$(DEMO)</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
但预处理器似乎跳过了我的启动代码。(我知道“Any CPU”和“AnyCPU”之间的区别。我从未接触过它,所以我很确定 Visual Studio 不关心空间。)
DEMO没有定义?相同的构造似乎适用于其他项目类型(例如.wixproj)我在这里缺少什么?
运行 Visual Studio 2017 并面向 .NET 4.6.1。考虑XAML以下。在 XAML 编辑器中,您会看到两个圆圈,但在运行应用程序时仅显示第二个圆圈。
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<Viewbox x:Key="MyBox" Stretch="Uniform">
<Ellipse Width="4" Height="4" Fill="Red"/>
</Viewbox>
</Window.Resources>
<StackPanel>
<ContentPresenter Width="100" Content="{StaticResource MyBox}"/>
<ContentPresenter Width="100" Content="{StaticResource MyBox}"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
如何重用Viewbox资源?