SftpClient.Exists always returns true, no matter if the file requested exists or not. If it does not and the login has write rights a zero byte file is created on the server.
SftpClient.DownloadFile will throw an exception if the file requsted does not exist, but only if the connected user doesn't have write rights. Otherwise it creates a 0 byte file and downloads it.
Get seems to work OK, unless you precede it with a Exists() call which makes a 0 byte file.
using (SftpClient sftp = new SftpClient("192.168.1.1", "user", "password"))
string downloadedFileName = "test11.log";
string localPath = "D:\\";
// if (sftp.Exists(downloadedFileName))
using (var file = File.OpenWrite(localPath + downloadedFileName))